//
//  ViewController.m
//  08-UITableView
//
//  Created by dllo on 16/7/25.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import "ViewController.h"
#import "UIView+Frame.h"
#define kTableViewReuse @"reuseIdentifier"
// 必须签订UITabBarDelegate， UITableViewDataSource
@interface ViewController () <UITableViewDelegate,UITableViewDataSource>
//  计数器
@property (nonatomic,assign) NSInteger numberCount;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.numberCount = 0;
    // Do any additional setup after loading the view, typically from a nib.
    self.navigationController.navigationBar.hidden = YES;
    
   //UITableView
   //1.基本创建
    UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    
    [self.view addSubview:tableView];
   // tableview 默认创建alwaysBounceVertical 为开启状态
    tableView.alwaysBounceVertical = YES;
   //2.相关属性
    // 行高 ,直接设置， 行高默认（44）
      tableView.rowHeight = 44;
   //预估行高度
//     tableView.estimatedRowHeight = 100;
    // 分割线颜色
    tableView.separatorColor = [UIColor redColor];
    // 分割线样式， 设置 隐藏分割线：UITableViewCellSeparatorStyleNone
    // 默认 UITableViewCellSeparatorStyleSingleLine
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    
//    //tableView的头视图
//     //headView的x， y不影响其位置
//     // 例：放轮播图， 个人资料
//    UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(1000, 1000, self.view.bounds.size.width, 200)];
//    headView.backgroundColor = [UIColor greenColor];
//   // 如果tableHeaderView 要进行频繁修改 ，必须加上
//    // beginUpdates
//    // endUpdates
//    [tableView beginUpdates];
//    tableView.tableHeaderView = headView;
//    [tableView endUpdates];
//    // footerView x 会对尾视图产生坐标影响， y不会
//    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.pf_width, 400)];
//    footerView.backgroundColor = [UIColor orangeColor];
//    [tableView beginUpdates];
//    tableView.tableFooterView = footerView;
//    [tableView endUpdates];
     // 小应用：
    // 隐藏 多余的tableView 的空Cell
    // 空Cell 一般出现在一个界面只展示几条数据时， 并且数据占不满整个屏幕
    tableView.tableFooterView = [[UIView alloc] init];
    
//    3.tableView 数据展示
   // delegate 代理 帮助tableView执行一些事件
   // dataSource 数据源 用来给tableView展示数据
    tableView.delegate = self;
    tableView.dataSource = self;
    
  //注册
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kTableViewReuse];
}
// 返回数据源个数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 100;
}
//返回数据源cell的样式
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   //cell创建方式一
//    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
    
//   cell创建方式二 从重用池中取出对应标识的cell
//    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
   // 如果从重用池取出的cell为空， 创建一个新的cell(如果注册了就不用判断了)
//    if (cell == nil) {
//    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
//        _numberCount++;
//        NSLog(@"创建新cell－－－%@----%ld",cell,_numberCount);
//    } else {
//        NSLog(@"重用旧cell---%@",cell);
//    }
    
//  cell 创建方式三 通过registerClass
//     [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kTableViewReuse];
//    注意： cell注册出来的Style是Default（没有副标题）
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
    
    // cell 属性
    // cell Style
//    UITableViewCellStyleSubtitle 主副标题上下紧挨 主标题字号大， 副标题字号小
//    UITableViewCellStyleValue1 最左边主标题（黑）  最右边副标题（灰）
 //    UITableViewCellStyleValue2 字号变小，蓝色主标题， 黑色副标题 主副标题紧挨
//    UITableViewCellStyleDefault cell 默认Style 没有副标题
    // cell 主标题
    cell.textLabel.text = @"嘿嘿";
   // cell 副标题
    cell.detailTextLabel.text = @"我就呵呵了";
    
  // cell的图片
    cell.imageView.image = [UIImage imageNamed:@"Unknown"];
    return cell;
}





- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
